//
// Created by sjjmw on 3/24/2022.
//

//应该使用dfs

#include "iostream"
#include "vector"
#include "list"
#include "algorithm"
#include "string"
#include "unordered_map"
#include "cmath"
#include<iomanip>
#include "string"
#include "map"
#include "list"

//最后还是ac了。
//记忆
//加教室，dfs一层一个学生
//1.尝试加入到之前的教室
//2.尝试开新教室
struct Sol{
    int n;
//    std::vector<int> arr;
    std::vector<int> qzh;
    std::vector<int> dp;
    void handle(
            int n1
            ){
        qzh.resize(n1);
        dp.resize(n1);
        for(int i=0;i<qzh.size();i++){
            std::cin>>qzh[i];
//            if(i>0){
//                qzh[i]+=qzh[i-1];
//            }
        }
        int max=INT_MIN;
        dp[0]=qzh[0];
        max= std::max(dp[0],max);
        for(int i=1;i<qzh.size();i++){
            if(dp[i-1]>0){
                dp[i]=qzh[i]+dp[i-1];
            }else{
                dp[i]=qzh[i];
            }
            max= std::max(dp[i],max);
        }
        printf("%d\n",max);
    }
};
int main(){
    int a,b,c;
//    float a,b,c,d;
    int e;

    while(std::cin>>a){
        Sol().handle(a);

//        Sol().handle(a,b);
    }

    return 0;
}